package java_DesignPattern.BehavioralPattern.TemplateMethodPattern;

/**
 * 模板方法模式
 * 定义一个操作中的算法的骨架，而将一些步骤延迟到子类中。
 * 模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
 */
public abstract class Template {

    public void templateMethod(){
        daoYou();
        reYou();
        xiaCai();
        xiaoTiaoLiao();
        chaoCai();
    }

    public void daoYou(){
        System.out.println("倒油");
    }

    public void reYou(){
        System.out.println("热油");
    }

    /**
     * 下菜
     */
    public void xiaCai(){
        System.out.println("下菜");
    }

    /**
     * 下调料
     */
    public abstract void xiaoTiaoLiao();

    public void chaoCai(){
        System.out.println("炒菜");
    }
}
